Social Messaging User Interface

ABSTRACT

Hubs for social interaction via electronic devices are described. In one aspect, a data processing device includes a display screen displaying a social interaction hub, the social interaction hub including a collection of records. Each record includes a counterparty identifier identifying a counterparty of a past social interaction event, a mode indicium identifying a mode by which the past social interaction event with the counterparty occurred, and a collection of mode indicia each identifying a mode by which a future, outgoing social interaction event with the counterparty can occur. The counterparty identifier, the mode indicium, and the collection of mode indicia are associated with one another in the records of the social interaction hub.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.17/470,772, filed Sep. 9, 2021, entitled “Social Messaging UserInterface,” which is a continuation of U.S. application Ser. No.15/677,448, filed Aug. 15, 2017, entitled “Social Messaging UserInterface,” which is a continuation of U.S. application Ser. No.12/914,773, filed Oct. 28, 2010, entitled “Social Messaging UserInterface,” which claims the benefit of priority under 35 U.S.C. §119(e) to U.S. Provisional Application Ser. No. 61/255,847, filed onOct. 28, 2009, entitled “Search, Navigation, and Docking with a MobileComputing Device,” the contents of which are incorporated herein byreference.

BACKGROUND

This specification relates to a hub for social interaction viaelectronic devices.

It has been said that “no man is an island.” Perhaps unsurprisingly,humans have developed electronic devices and mechanisms that promotesocial interaction by facilitating the exchange of messages, photos,media, and other information between individuals. For example, mobilephones allow users to speak with one another without being tied to afixed landline. Electronic mail and text messages are delivered nearlyinstantaneously. Photo sharing websites host photos posted byindividuals for their friends and associates to view. Social networkssuch as FACEBOOK and MYSPACE allow large groups to remain in contact.Message boards allow communities with common interests to shareinformation and discuss relevant issues. Blogs and other pages allowpeople to comment on content and converse with even unknown individuals.

SUMMARY

This specification describes a hub and corresponding user interface forthe social interaction that occurs via electronic devices andmechanisms. The hub can be a center where information regardingdifferent social interaction mechanisms is gathered and organized. Thehub can allow a user to integrate those social interaction mechanisms byproviding an overview of the different mechanisms and allowing users tofacilely transition between different mechanisms.

In one aspect, a data processing device includes a display screendisplaying a social interaction hub, the social interaction hubincluding a collection of records. Each record includes a counterpartyidentifier identifying a counterparty of a past social interactionevent, a mode indicium identifying a mode by which the past socialinteraction event with the counterparty occurred, and a collection ofmode indicia each identifying a mode by which a future, outgoing socialinteraction event with the counterparty can occur. The counterpartyidentifier, the mode indicium, and the collection of mode indicia areassociated with one another in the records of the social interactionhub.

This and other aspects can include one or more of the followingfeatures. The collection of mode indicia can be limited to modes ofsocial interaction that are available for social interaction with thecounterparty. At least one of the records can include an availabilityindicator labeling a first mode indicium in the collection of modeindicia. The availability indicator can indicate that the counterpartyis presently available for social interaction via the mode identified bythe first mode indicium. The first mode indicium can identify anelectronic messaging mode. Each record can also include an interactivegraphical element that triggers display of the collection of modeindicia in response to user interaction. Each record can also include adescription of a subject of the past social interaction event. Forexample, a first description of the subject of a first past socialinteraction event can include a subject line of an electronic mail ortext message. A second description of the subject of a second pastsocial interaction event can include an excerpt of a posting on a socialnetwork. The mode indicia can identify both direct social interactionmodes in which information can be exchanged directly with thecounterparty and modes mediated by a social network server. At leastsome the mode indicia in the collection can be variants of the modeindicium identifying the mode by which the past social interaction eventoccurred. The social interaction hub can include information describinga disposition of the currently displayed social interaction recordswithin a larger collection of social interaction records and aninteractive graphical element that triggers display of additional socialinteraction records within the larger collection in response to userinteraction.

In another aspect, a data processing device includes a display screendisplaying a social interaction hub. The social interaction hub includesa collection of records each characterizing a past social interactionevent. The characterized social interaction events including directsocial interaction events in which users have exchanged informationdirectly with one another and a social interaction event mediated by asocial network server. The records characterizing the direct socialinteraction events are interspersed with the records characterizing thesocial interaction events mediated by the social network server.

This and other aspects can include one or more of the followingfeatures. The records characterizing the direct social interactionevents and the records characterizing the social interaction eventsmediated by the social network server can be ordered chronologicallyaccording to order of occurrence. Each record can include one or more ofthe following: a counterparty identifier identifying a counterparty of apast social interaction event; a mode indicium identifying a mode bywhich the past social interaction event with the counterparty occurred;a collection of mode indicia each identifying a mode by which a future,outgoing social interaction event with the counterparty can occur; andan interactive graphical element that triggers display of the collectionof mode indicia in response to user interaction. Each record can includea description of a subject of the past social interaction event.

In another aspect, a user-portable device includes a display screen, oneor more data communication interfaces, a data storage device configuredto store a phone/message log, and a data processing system programmed toperform activities in accordance with the logic of one or more sets ofmachine-readable instructions. The operations include one or more serverinterface modules for interfacing with a social network server, a dataaggregation module for aggregating data received from the phone/messagelog and data received from the one or more server interface modules, anda user interface module for presenting aggregated data in a collectionof records on the display screen. Each record includes a counterpartyidentifier identifying another user and a collection of mode indiciaeach identifying a mode by which a future, outgoing social interactionevent with the counterparty can occur. At least one of the recordscomprises information received from the phone/message log andinformation received from one or more server interface modules.

This and other aspects can include one or more of the followingfeatures. The information received from one or more server interfacemodules can include an availability indicator indicating that a seconduser is presently available for social interaction via a particularmode. The information received from the phone/message log can include atime when a past telephone call occurred. At least one of the records inthe collection of records can include a social status recordcharacterizing a status of a second user. The user-portable device caninclude a contact information data store storing contact information.The data aggregation module can also aggregate data received from thecontact information data store with the data received from thephone/message log and the data received from the one or more serverinterface modules. The data received from the contact information datastore can include a photo of a second user. The records in thecollection can each characterize a past social interaction event. Thedata aggregation module can also filter past social interaction eventsto limit the past social interaction events characterized in thecollection. The data aggregation module can filter past socialinteraction events to limit the past social interaction eventscharacterized in the collection based on counterparties involved in thepast social interaction events. The data aggregation module can alsoresolve conflicts between data received from the phone/message log anddata received from the one or more server interface modules.

In another aspect, a computer-implemented communication method includesdisplaying a list of contacts to a user of a computing device, the listof contacts including acquaintances of the user, receiving a userselection of an entry in the list of contacts, generating a control barshows each of a plurality of modes by which the acquaintance can becommunicated with, and beginning communication immediately via one ofthe modes in response to a user of the device selecting an icon for theone of the modes to begin communicating immediately via the one of themodes.

In another aspect, a computer-implemented communication method includesdisplaying identifiers of acquaintances of a user in a plurality ofcontexts in an operating system on a computing device of the user,receiving a user selection of one of the identifiers, identifying aplurality of communication modes by which an acquaintance whocorresponds to the selected identifier can be contacted, displaying aselectable control for each of the plurality of communication modes bywhich the acquaintance can be contacted, receiving a selection of aselectable control, and presenting the mode of communicationcorresponding to the selected control to the user for communicating withthe acquaintance.

This and other aspects can include one or more of the followingfeatures. Displaying the selectable control can include displaying apeek of recent communication associated with the acquaintance via thecorresponding mode of communication.

In another aspect, a social networking system includes an applicationprogramming interface, a plurality of a social networking servicesproviding information about members of the services upon request fromremote clients that are properly authenticated, and a plurality ofcomputing devices operating via the application programming interface tosubmit requests for information from the social networking servicesassociated with acquaintances for user of the computing devices viaapplications that each show information from a plurality of differentsocial networking services using the application programming interface.Each of the plurality of computing devices is programmed to generate acontrol bar that shows mechanisms by which acquaintances of the users ofthe computing devices can be communicated with in response to the userspressing an image of such an acquaintance.

In another aspect, a data processing device includes a display screen,one more data storage devices storing a database of integrated contactinformation and account information, and one or more data processors.The contact information includes contact identifiers that eachidentifies a potential counterparty for social interaction. The accountinformation includes a first record characterizing a first account of atleast one of the potential counterparties at a first entity thatmediates social interaction and a second record characterizing a secondaccount of at least one of the potential counterparties at a secondentity that mediates social interaction. The first and second recordscharacterizing the first and second accounts each includes the contactidentifier of the at least one potential counterparty and are dispersedamong other records characterizing other accounts of others of thepotential counterparties, wherein the other records each includes arespective contact identifier identifying respective of the otherpotential counterparties. The one or more data processors are programmedto access the database of integrated contact information and identifythe first and second records using the contact identifier of the atleast one potential counterparty and display, at the same time on thedisplay screen, a first graphical element indicating that outgoingsocial interaction mediated by the first entity is available and asecond graphical element indicating that outgoing social interactionmediated by the second entity is available.

This and other aspects can include one or more of the followingfeatures. The first record can include an entry comprising an identifierof the category of the first account, wherein the identifier is selectedfrom the group consisting of an identifier of a social network accountand an identifier of a photo sharing network account. The dataprocessors can also be programmed to implement a first interface modulefor interfacing with the first entity in accordance with thecharacterization of the first account in the first record, a secondinterface module for interfacing with the second entity in accordancewith the characterization of the second account in the second record, orboth such a first and second interface module. The first entity caninclude a social network server. The first interface module can beconfigured to excerpt a post by the at least one of the potentialcounterparties available on the social network server. The displayscreen can be a touch screen. The first and second graphical elementscan be interactive elements displayed on the touch screen. The one ormore data processors can be programmed to detect user interaction with aselected one of the first and second graphical elements and trigger theoutgoing social interaction indicated by the selected one of the firstand second graphical elements in response to the user interaction. Asocial interaction hub displayed on the display screen can include thegraphical elements indicating that outgoing social interaction mediatedby the first and second entity is available. The data processing devicecan be a handheld device that comprises a phone interface.

In another aspect, a data processing device includes a display screen,one more data storage devices storing account information, and one ormore data processors. The contact information includes contactidentifiers that each identifies a potential counterparty for socialinteraction. The account information including a first recordcharacterizing a first representation of a first of the potentialcounterparties at a first account provided by a first entity thatmediates social interaction and a second record characterizing a secondrepresentation of the first of the potential counterparties at a secondaccount provided by a second entity that mediates social interaction.The first and second records characterizing the first and secondrepresentations each includes data drawn from the respective of thefirst and second entities and are dispersed among other recordscharacterizing other representations of others of the potentialcounterparties. The one or more data processors are programmed to accessthe database of integrated contact information and identify the firstand second records using the identifier of the at least one potentialcounterparty and display, at the same time on the display screen, afirst graphical element indicating that outgoing social interactionmediated by the first entity is available and a second graphical elementindicating that outgoing social interaction mediated by the secondentity is available.

This and other aspects can include one or more of the followingfeatures. The database can include an row in a data table comprising anidentifier of the category of the first account, wherein the identifieris selected from the group consisting of an identifier of a socialnetwork account and an identifier of a photo sharing network account.The data processors can also programmed to implement a first interfacemodule for interfacing with the first entity to obtain informationcharacterizing the first of the potential counterparties from the firstentity and a second interface module for interfacing with the secondentity to obtain information characterizing the first of the potentialcounterparties from the second entity. The first entity can be a socialnetwork server. The first interface module can be configured to excerpta post by the at least one of the potential counterparties available onthe social network server. The display screen can be a touch screen. Thefirst and second graphical elements can be interactive elementsdisplayed on the touch screen. The one or more data processors can beprogrammed to detect user interaction with a selected one of the firstand second graphical elements and trigger the outgoing socialinteraction indicated by the selected one of the first and secondgraphical elements in response to the user interaction. A socialinteraction hub displayed on the display screen can include thegraphical elements indicating that outgoing social interaction mediatedby the first and second entity is available. The data processing devicecan be a handheld device that comprises a phone interface.

In another aspect, a data processing device includes a display screen,one more data storage devices, and one or more data processors. The onemore data storage devices storing account information including a firstrecord characterizing a first representation of an individual at a firstaccount at a first entity that mediates social interaction, first statusupdate information characterizing a first status update drawn from thefirst account, the first status update information including acharacterization of the updated first status and a characterization ofthe time when first status was updated, a second record characterizing asecond representation of the individual at a second account at a secondentity that mediates social interaction, and second status updateinformation characterizing a second status update drawn from the secondaccount, the second status update information including acharacterization of the updated second status and a characterization ofthe time when the second status was updated. The one or more dataprocessors are programmed to access the first and second representationsof the individual and identify the characterizations of the times whenthe first and the second status were updated, compare the times when thefirst and the second status were updated to determine the more recent ofthe first and the second status updates, and display, on the displayscreen, the more recent of the first and the second status updates basedon the comparison of the times when the first and the second status wereupdated.

This and other aspects can include one or more of the followingfeatures. The first record can be an row in a data table comprising anidentifier of the category of the first account, wherein the identifieris selected from the group consisting of an identifier of a socialnetwork account and an identifier of a photo sharing network account.The one or more data processors can be programmed to display the morerecent status update in a social status record that comprises anidentifier of the individual and a collection of indicia that identifymodes by which a future outgoing social interaction event with theindividual can occur. The social status record can include a locationdescription that describes either the present location of theindividual, an availability indicator that indicates that the individualis presently available for social interaction via one of the modes, orboth. The first and second status update information can be found inrespective first and second status update records. The first and secondrecords can be instantiated as first and second rows in a first datatable. The first and second status update information is found in twodifferent rows of a second data table. The rows of the second data tablecan each reference a respective one of the first and second rows in thefirst data table. The one or more data processors can be programmed todisplay the more recent status update on a display screen in a socialinteraction record that includes a visual indicium characterizing asocial interaction event with the individual that has already occurred.The social interaction record can include one or more visual indiciarepresenting multiple modes by which a future, outgoing socialinteraction events with the individual can occur. The display screen canbe a touch screen. The visual indicia representing multiple modes can beinteractive elements displayed on the touch screen. The one or more dataprocessors can be programmed to detect user interaction with a selectedone of the visual indicia representing multiple modes and trigger theoutgoing social interaction represented by the selected one of thevisual indicia in response to the user interaction.

These and other aspects can, in certain of the implementations describedherein, provide the following advantages. An application may provideaccess to communication with a user's acquaintances through a variety ofcommunication modes, including by social networking sites. A user'scontact list may be displayed on a mobile device in alphabetical order.When the user presses an image of an acquaintance, a control bar can begenerated that shows each of the mechanisms by which the acquaintancecan be communicated with. The user of the device may then select an iconfor one of the modes to begin communicating immediately via that mode.For example, pressing the telephone icon can cause the acquaintance'stelephone number to be dialed, while pressing a social networking iconcan cause a text box to be presented so that one can write on the otheruser's wall.

Other manipulation of the input control can cause recent communicationsby the particular mode of communication to be displayed. For example,long pressing on a social networking icon can cause the last five poststo the acquaintances wall to be display for the user.

The interface may also be genericized, so that any image ofacquaintances can be an object that exhibits the behavior shown here.Thus, for example, whenever a user sees a photo of an acquaintance, theuser will know that he or she can quickly access modes of communicatingwith that acquaintance.

Data for such an application may be provided via a standard and publicAPI. For example, when a user makes the interactions described above,the user's device may make requests to data sources internal to thedevice (e.g., contact information) and to services outside the device(e.g., social networks), which may then return information according tothe pre-determined requests. Such services may also authenticate a userbefore providing the user with certain forms of information.

The details of one or more implementations of the subject matterdescribed in this specification are set forth in the accompanyingdrawings and the description below. Other features, aspects, andadvantages will become apparent from the description, the drawings, andthe claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic representation of a system of electronic devicesthat exchange information and provide social interaction.

FIGS. 2-8 are schematic representations of implementations of socialinteraction hubs displayed on mobile devices.

FIG. 9 is a schematic representation of an implementation of a socialstatus record suitable for display on a mobile device.

FIGS. 10, 11, and 13 are schematic representations of collections ofcomponents of mobile devices.

FIG. 12 is a schematic representation of a collection of user preferenceinformation that specifies limitations on the characterization of pastsocial interaction events in a social interaction hub.

FIG. 14 is an example of a database schema of an integrated socialinformation data store.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

FIG. 1 is a schematic representation of a system 100 of electronicdevices that exchange information and provide social interaction. System100 includes a handheld, mobile device 105 that is associated with afirst individual user. Mobile device 105 includes one or more wirelessor wired data communication components. The user of mobile device 105can use the data communication components to interact socially withother individuals, as described further below.

In the illustrated implementation of system 100, mobile device 105includes two wireless data communication components, namely, a mobilephone transceiver and a WiFi transceiver. The mobile phone transceiveris able to exchange messages 110 with a phone base station 115. The WiFitransceiver is able to exchange messages 120 with a WiFi access point125 and messages 130 with a peer mobile device 135 that also includes aWiFi transceiver. Peer mobile device 135 is associated with anotherindividual user.

Phone base station 115 and WiFi access point 125 are connected for datacommunication with one or more data communication networks 140 via datalinks 145, 150 and can exchange information with social interactionservers 155, 160, 165, 170. In some implementations, peer mobile device135 may also be able to exchange messages 175 with WiFi access point 125(or another WiFi access point) for data communication with datacommunication networks 140 and access to social interaction servers 155,160, 165, 170. One or more additional mobile devices 180, which areassociated with one or more other individual users, may also be able toexchange messages 185 with phone base station 115 (or another basestation) for data communication with data communication networks 140 andaccess to social interaction servers 155, 160, 165, 170. One or morepersonal computing devices 190, which are associated with one or moreother individual users, may also be connected for data communicationwith one or more data communication networks 140 via a data link 190 foraccess to social interaction servers 155, 160, 165, 170.

System 100 supports both direct and server-mediated social interactionby the users with whom device 105, 135, 180, 190 are associated. Directsocial interaction allows users to send messages, photos, or other mediadirectly to one another. For example, the user with whom device 105 isassociated can telephone the user with whom device 180 is associated.These user can talk to one another directly, without intermediation by aserver. As another example of direct social interaction, the user withwhom device 105 is associated can establish a peer-to-peer wireless linkwith the user with whom device 135 is associated. These users can, e.g.,text one another or send photos to one another.

Server-mediated social interaction allows users to exchange messages,photos, or other media with a server data processing device mediatingthe exchange. The illustrated implementation of system 100 includes fourdifferent examples of servers that can mediate such social interaction,namely, an electronic mail server 155, a social network server 160, atext message server 165, and a photo server 170. Each of socialinteraction servers 155, 160, 165, 170 includes one or more dataprocessors that are programmed to perform data processing activitiesthat mediate social interaction. For example, electronic mail server 155is programmed to allow a user to access electronic mail from anelectronic mail client. Social network server 160 is programmed to allowusers to access a social network where messages, photos, and/or othermedia are exchanged. For examples, social network server 160 can supportsocial networks such as FACEBOOK™, MYSPACE™, YAHOO! 360™, LINKEDIN™,ESSEMBLY™, ORKUT™, FRIENDSTER™, and others.

Text message server 165 is programmed to allow a user to exchange textmessages with other users. Photo server 170 is programmed to allow auser to access a collection of one or more photographs posted to photoserver 170 by other individuals. In some implementations, photo server170 may restrict a user to accessing photographs posted by otherindividuals who have somehow approved the user's access.

For each user with whom a device 105, 135, 180, 190 is associated,social interaction events provided by system 100 can be classified aseither “outgoing” or “incoming.” In the context of a user with whomdevice 105 is associated, outgoing social interaction events include,e.g., outgoing phone calls and text messages, e-mail messages sent toother users, photographs posted to photo server 170, comments posted ona social network hosted by social network server 160, posts to messageboards, comments on blog or other pages, and the like. In the context ofa user with whom device 105, 135, 180, 190 is associated, incomingsocial interaction events include, e.g., incoming phone calls and textmessages, e-mail messages received from other users, comments posted byother users on photographs posted to photo server 170, comments postedon the user's page in a social network hosted by social network server160, responses to that users posts to message boards or blog or othercomments, and the like.

In addition to one or more wireless or wired data communicationcomponents, mobile device 105 can also include a display screen 195 andone or more input devices 197. In some implementations, display screen195 can act as both an input and an output. For example, display screen195 can be a touch screen that both displays graphical elements on ascreen and detects the presence and location of interaction with thescreen. Input devices 197 can include one or more, e.g., key, pad,trackball, or other component that receives mechanical, audio, or otherinput from a user. In some implementations, mobile device 105 caninclude additional components such as a GPS unit, accelerometers, adigital camera, audio jacks, and the like.

FIG. 2 is a schematic representation of one implementation of a socialinteraction hub 200 displayed on mobile device 105. Social interactionhub 200 is displayed on all or a portion of display screen 195 andincludes a collection of social interaction records 205, 210, 215, 220.Each social interaction record 205, 210, 215, 220 is a graphical elementthat includes indicia characterizing a social interaction event that hasalready occurred as well as indicia characterizing multiple modes bywhich a future, outgoing social interaction event can occur. In general,the future outgoing social interaction event will be related to the pastsocial interaction event in that information will be exchanged betweenthe same users.

In the illustrated implementation, social interaction records 205, 210,215, 220 are arranged chronologically, e.g., in the vertically downwarddirection in the order in which they occurred regardless of the natureof the social interaction that they characterize. Thus, in theillustrated implementation, the outgoing telephone call eventcharacterized in social interaction record 205 occurred before theelectronic mail event characterized in social interaction record 210. Inturn, the events characterized in both records 205, 210 occurred beforethe social network event characterized in social interaction record 215,which in turn occurred before the social network event characterized insocial interaction record 220. In other implementations, socialinteraction records 205, 210, 215, 220 are arranged in accordance withone or more other parameters. For example, social interaction records205, 210, 215, 220 can be arranged alphabetically or by the mode of thepast social interaction event.

Each social interaction record 205, 210, 215, 220 includes an indicium225 identifying the counterparty involved in a past social interactionevent, an indicium 230 identifying the category of that past socialinteraction event, and a collection 235 of indicia identifying modes bywhich future, outgoing social interaction events can occur. Counterpartyindicium 225 can be one or more of text (e.g., a person's name), aphoto, a glyph, a telephone number, or other symbol identifying theinvolved counterparty. For example, in the illustrated implementation,counterparty indicium 225 in record 205 identifies that “Peter Rabbit”was the counterparty in the social interaction event characterized byrecord 205 whereas counterparty indicium 225 in record 210 identifiesthat “Peter Piper” was the counterparty in the social interaction eventcharacterized by record 210.

Each category indicium 230 can be one or more of text, a photo, a glyph,or other symbol that identifies the mode of the past social interactionevent. For example, in the illustrated implementation, category indicium230 in record 205 identifies that the social interaction eventcharacterized by record 205 was a telephone call. Category indicium 230in record 210 identifies that the social interaction event characterizedby record 210 was an electronic mail event. Category indicia 230 inrecords 215, 220 identify that the social interaction eventscharacterized by records 215, 220 were postings on a social network. Insome implementations, category indicia 230 identifying that socialinteraction events as postings on a social network can include, e.g., alogo or other identifier of the social network, as described furtherbelow.

In some implementations, social commerce interaction events can beidentified by category indicia 230. Social commerce interaction eventsare commercial offers, or information about commercial offers, that aredistributed directly from peer-to-peer rather than through, e.g., massmedia. One example of a social commerce interaction event is a printablecoupon or discount link that is forwarded from one individual toanother. Another example of social commerce interaction event are eventsthat are tailored for commerce that relies on near field communicationfor, e.g., mobile ticketing, mobile payment, and the like. Commercialoffers, or information about commercial offers, that are recognized bynear field communication devices can be exchanged between individuals.Such exchanges can be can be identified by category indicia 230 insocial interaction hub 200.

In some implementations, social interaction hub 200 can be limited torecords that characterize either incoming or outgoing past socialinteraction events. In other implementations, social interaction hub 200can include records that characterize both incoming and outgoing socialinteraction events. In some implementations, the records can be limitedto characterizing either incoming or outgoing social interaction eventsfor some modes of social interaction but characterize both incoming andoutgoing social interaction events for other modes of socialinteraction. For example, in some implementations, social interactionhub 200 can include records characterizing both incoming and outgoingtelephone calls but only outgoing postings on a social network oroutgoing electronic mail. This approach can help limit thecharacterization of social interaction events that occur veryfrequently, such as postings by others on a social network.

In some implementations, category indicia 230 can identify whether thepast social interaction event was an incoming event or an outgoingevent. For example, category indicium 230 in record 205 includes anarrow symbol 265 indicating that the past social interaction eventcharacterized by record 205 was an outgoing telephone call rather thanan incoming telephone call. Category indicia 230 can identify whetherthe past social interaction event was an incoming event or an outgoingevent in a variety of way, including color, highlights, and othergraphical devices.

In some implementations, social interaction hub 200 can exclude certaincategories of social interaction events altogether. For example, socialinteraction hub 200 can exclude all text messages from characterizationby a social interaction records. In other implementations, socialinteraction hub 200 can use a single record to characterize a group or acollection of events of the same category. For example, a chain ofrelated electronic mail correspondence or a series of text messagesexchanged with the same counterparty or counterparties can becharacterized in a single record in social interaction hub 200.

In some implementations, social interaction hub 200 can be limited tosocial interaction events involving specified counterparties. Forexample, social interaction hub 200 can be limited to social interactionevents involving a defined group of contacts, such as a user's socialcontacts.

Indicia collection 235 can include text, photos, glyphs, or othersymbols that identify modes by which a future outgoing socialinteraction event can occur. The modes identified in each indiciacollection 235 can be limited to the modes which are available forsocial interaction with the same counterparty identified by the personindicium 225 of that record. For example, indicia collection 235 inrecord 210 only identifies two modes which are available for socialinteraction with the counterparty “Peter Piper” identified bycounterparty indicium 225 in that same record. As another example,indicia collection 235 in record 220 identifies five modes which areavailable for social interaction with the counterparty “Peter Rabbit”identified by counterparty indicium 225 in that same record. If a modeof interaction is not available for the counterparty identified by theperson indicium 225, a mode indicium for that mode of interaction can beomitted.

In general, the indicia in indicia collection 235 are also interactiveelements that allow a user to trigger social interaction with thecounterparty identified by the person indicium 225 of that record viathe identified mode. For example, a mobile device 105 can presentgraphical elements tailored for social interaction via the modeidentified by an indicium or attempt to establish social interaction viathe mode identified by an indicium in response to user interaction withthat indicium.

Five different example mode indicia 240, 245, 250, 255, 260 are shown inthe illustrated implementation. Each mode indicium 240, 245, 250, 255,260 can identify a different mechanism by which users can interactsocially. For example, in the illustrated implementation, the presenceof mode indicium 240 in a collection 235 identifies that text messagesare available for social interaction with the counterparty identified inthat record. Mobile device 105 can, e.g., present a text entry screen orother modality for entering text messages in response to userinteraction with mode indicium 240.

The presence of mode indicium 245 in a collection 235 identifies that aphotosharing network is available for social interaction with thecounterparty identified in that record. Mobile device 105 can, e.g.,navigate to a website of the photosharing network in response to userinteraction with mode indicium 245.

The presence of mode indicium 250 in a collection 235 identifies thatthe counterparty identified in that record can be telephoned. Mobiledevice 105 can, e.g., place a telephone call to a counterparty inresponse to user interaction with mode 250.

The presence of mode indicium 255 in a collection 235 identifies thatthe counterparty identified in that record can be electronically mailed.Mobile device 105 can, e.g., present a text entry screen or othermodality for entering electronic mail messages in response to userinteraction with mode indicium 255.

The presence of mode indicium 260 in a collection 235 identifies that asocial network is available for social interaction with the counterpartyidentified in that record. Mobile device 105 can, e.g., navigate to awebsite of the photosharing network in response to user interaction withmode indicium 260.

In some implementations, the symbols used in mode indicia 240, 245, 250,255, 260 can closely resemble the symbols used as category indicium 230.For example, mode indicia 240, 245, 250, 255, 260 can be identical to orresized and/or differently colored variants of various category indicia230. Thus, in some implementations, mode indicia 240, 245, 250, 255, 260identifying that a social network is available for social interactioncan include, e.g., a logo or other identifier of the social network.

In the illustrated implementation, indicia collection 235 includes onlyone mode indicium for each category of social interaction. This is notnecessarily the case. For example, mode indicia that identify differentsocial networks which are available for social interaction with the samecounterparty can be included in a single indicia collection 235. Asanother example, mode indicia that identify different telephone numberswhich are available for social interaction with the same counterpartycan be included in a single indicia collection 235.

As shown, unlike a call log on a cellular phone, the records in socialinteraction hub 200 are not constrained to characterizing only one or alimited number of different modes of social interaction. Instead, therecords in social interaction hub 200 can characterize multiple modes ofsocial interaction, including social network interaction. Further, therecords in social interaction hub 200 are not constrained tocharacterizing social interaction that is implemented by a single datacommunication component. For example, in the context of mobile device105 of system 100, social interaction hub 200 can characterize eventsthat are implemented using a mobile phone transceiver and events thatare implemented using a WiFi transceiver. The events characterized in asingle social interaction hub 200 can be both direct social interactionevents and server-mediated social interaction events.

FIG. 3 is a schematic representation of an implementation of a socialinteraction hub 300 displayed on mobile device 105. In addition tofeatures described in detail above, selected mode indicia 240, 245, 250,255, 260 in indicia collections 235 are labeled with an availabilityindicator 305. Availability indicators 305 are graphical elements thatindicate that the counterparties identified by indicia 225 in respectivesocial interaction records are presently available for socialinteraction via the labeled mode. For example, an availability indicator305 associated with a mode indicium 260 can indicate that a counterpartyis presently logged in to and available on a social network. As anotherexample, availability indicator 305 associated with a mode indicium 240can indicate that a counterparty is presently online and available toexchange text messages.

Availability indicators 305 can label a mode indicium in a variety ofways. For example, availability indicators 305 can include a highlight,a color change, or other modification of a mode indicium itself.Availability indicators 305 can also be a separate graphical elementthat labels a mode indicium by virtue of positioning relative to themode indicium, as is the case for the over-line availability indicators305 in the illustrated implementation.

In some implementations, availability indicators 305 can indicate that acounterparty is not presently available for social interaction via alabeled mode. For example, a mode indicium can be modified, e.g., bydarkening to indicate that the a counterparty is not presently availablefor social interaction via that mode.

FIG. 4 is a schematic representation of an implementation of a socialinteraction hub 400 displayed on mobile device 105. In addition tofeatures described in detail above, each social interaction record 205,210, 215, 220 includes an description 405 of the subject of the pastsocial interaction event characterized in that record. Subjectdescriptions 405 can include text or other graphical element thatdescribes the past social interaction event. Descriptions 405 can be,e.g., the subject line of an electronic mail, an excerpt or other “peek”from a text message, text accompanying a photograph posted on a photosharing website, or an excerpt or other “peek” from a posting on asocial network.

FIG. 5 is a schematic representation of an implementation of a socialinteraction hub 500 displayed on mobile device 105. In addition tofeatures described in detail above, each social interaction record 205,210, 215, 220 includes an description 505 of a location of acounterparty of the past social interaction event characterized in thatrecord. Location descriptions 505 can include text or other graphicalelement that describes either the present location of the counterpartyor a “home” or other default location of the counterparty. In someimplementations, the location which is characterized depends uponwhether present location information is available. For example, acounterparty may post the counterparty's present location to a socialnetwork. If such a posting is available, then location descriptions 505in one or more interaction records 205, 210, 215, 220 that describesocial interaction events with that counterparty can describe thatpresent location. However, in the absence of such a posting or othersource of information, then such location descriptions 505 can describea default location of the counterparty.

FIG. 6 is a schematic representation of an implementation of a socialinteraction hub 600 displayed on mobile device 105. In addition tofeatures described in detail above, each social interaction record 205,210, 215, 220 includes an description 605 of the time when the pastsocial interaction event characterized in that record occurred. Timedescriptions 605 can include text or other graphical element thatdescribes the time when the past social interaction event characterizedin the same social interaction record 205, 210, 215, 220 occurred.

FIGS. 7 and 8 are schematic representations of an implementation of asocial interaction hub 700 displayed on mobile device 105. In additionto features described in detail above, social interaction hub 700includes another interaction record 705 and interaction records 205,210, 215, 220, 705 each include a widget 710. Widgets 710 areinteractive graphical elements. User interaction with widgets 710triggers the display of the indicia collection 235 that identifies modesby which a future, outgoing social interaction events can occur with thecounterparty identified in the interaction record associated with thewidget 710. The display of one indicia collection 235 in response touser interaction with the widget 710 associated with social interactionrecord 205 illustrated in FIG. 8 .

Indicia collections 235 thus need not be displayed continuously forevery interaction record 205, 210, 215, 220, 705. Rather, selectedindicia collections 235 are only displayed in response to the receipt ofa user's indication that display of the selected indicia collection 235is desired. Accordingly, interaction hub 700 can be made relativelysmaller and the limited display area of mobile device 105 used for otherends.

Social interaction hub 700 also includes a navigation area 715.Navigation area 715 includes one or more navigation widgets 720 anddescriptive information 725, 730 that facilitate navigation toadditional social interaction records. Information 725 describes thedisposition of the currently displayed social interaction records withina larger collection of social interaction records. In the illustratedimplementation, information 725 identifies the date on which the eventsdescribed in the displayed social interaction record 205, 210, 215, 220,705 occurred (i.e., April 30th). In other implementations, thedisposition of the currently displayed social interaction records can bedescribed according to the number of social interaction records in aparticular group of social interaction records, or the like. Information730 describes that navigation area 715 is indeed a navigation area thatcan be used to navigate to “more” social interaction records. Navigationwidget 720 is an interactive graphical element that allows a user totrigger the display of additional social interaction records. In someimplementations, navigation widget 720 can include a graphical or otherindicia that identifies the social interaction records which will bedisplayed in response to user interaction with navigation widget 720.For example, in the illustrated implementation, navigation widget 720includes a triangle which is oriented downward. In the context of thechronological organization of social interaction record 205, 210, 215,220, 705 within the illustrated implementation of social interaction hub700, the triangle identifies that social interaction records whichcharacterize events which occurred before the events characterized insocial interaction record 205, 210, 215, 220, 705 will be displayed inresponse to user interaction with navigation widget 720.

FIG. 9 is a schematic representation of an implementation of a socialstatus record 900 suitable for display on a mobile device. Social statusrecord 900 is a graphical element that includes one or more statusindicia 905 characterizing the status of a counterparty with whom theuser interacts. The status of a counterparty is a state or a conditionof the counterparty. Status indicia 905 can include text or othergraphical elements that characterize a counterparty's status. In someimplementations, the content of a status indicium 905 can be derivedfrom one or more modes that are available for social interaction withthe counterparty, such as a social network or a text messaging network.For example, in the illustrated implementation, status indicium 905 isderived from a the counterparty's GOOGLE TALK™ status.

In the illustrated implementation, social status record 900 includes acounterparty indicium 225, an indicia collection 235, availabilityindicators 305, and a location description 505, in addition to statusindicia 905. In other implementations, social status record 900 can omitone or both of availability indicators 305 and a location description505. In some implementations, social status record 900 can include awidget 710 that triggers the display of the indicia collection 235.

In some implementations, social status record 900 can include adescription of the time when the content of status indicia 905 was lastconfirmed as valid. For example, the time at which a status update wasposted on a social or a chat network can be taken as the time when thecounterparty's status was last confirmed as valid.

In some implementations, one or more social status records 900 can becollected into a social interaction hub that is limited to social statusrecords 900. The display of a mobile device 105 can present a socialinteraction hub that is limited to social status records and a socialinteraction hub that is limited to social interaction records at thesame time or one at a time, e.g., in response to triggers received froma user. In other implementations, a single social interaction hub caninclude one or more social status records 900 as well as one or moresocial interaction records. For example, one or more social interactionrecords 900 can be included in one or more of social interaction hubs200, 300, 400, 500, 600, 700 (FIGS. 2-8 ) and presented on mobile device105.

Social status records 900 can be arranged in a social interaction hubchronologically, e.g., in the vertically downward direction in the orderin which the content of status indicia 905 was last confirmed as valid.In implementations where social status records and social interactionrecords appear in the same social interaction hub, the times when statuswas last confirmed as valid can be compared with the times when socialinteraction events last occurred and the corresponding record arrangedchronologically.

In some implementations, the social status records 900 that arepresented in any social interaction hub can be limited to specifiedcounterparties. For example, social status records 900 can be limited toa defined group of contacts, such as a user's social contacts.

In the illustrated implementation of social status record 900, indiciacollection 235 includes a contact indicium 910. Contact indicium 910 isan interactive graphical element that allows a user to navigate toadditional information regarding the counterparty identified bycounterparty indicium 225. For example, in response to user interactionwith contact indicium 910, mobile device 105 can, e.g., present acontact card or other assembly of information characterizing thecounterparty. As illustrated in FIGS. 7, 8 , social interaction recordscan also include a contact indicium 910, e.g., disposed within indiciacollection 235.

FIG. 10 is a schematic representation of a collection 1000 of componentsof a mobile device 105. Collection 1000 can include both hardware andsoftware components, as well as one or more data storage devices and oneor more data processors that perform operations for presenting a socialinteraction hub on display screen 195 of a mobile device 105. Forexample, collection 1000 can present one or more of social interactionhubs 200, 300, 400, 500, 600, 700 (FIGS. 2-8) or a social interactionhub that is limited to social status records on a mobile device 105.

Collection 1000 includes a display interface 1005, a phone interface1010, an interface 1015 with a wireless transceiver, a collection ofdata stores 1020, 1025, 1030, and a data processing system 1035. Displayinterface 1005 is a component that interfaces between data processingsystem 1035 and display screen 195. Display interface 1005 can includehardware and/or software that provide a data communication path anddefines a data communication protocol for the transfer of image and userinteraction information between data processing system 1035 and displayscreen 195. Display interface 1005 can include one or more of a graphicprocessing unit, a video display controller, a video display processor,or other display interface.

Phone interface 1010 is a component that interfaces between dataprocessing system 1035 and a cellular or other phone. Phone interface1010 can include hardware and/or software that provide a datacommunication path and define a data communication protocol for thetransfer of information between data processing system 1035 and thephone.

Wireless interface 1010 is a component that interfaces between dataprocessing system 1035 and a wireless transceiver. Phone interface 1010can include hardware and/or software that provide a data communicationpath and define a data communication protocol for the transfer ofinformation between data processing system 1035 and the wirelesstransceiver.

Data stores 1020, 1025, 1030 are one or more collections ofmachine—readable information stored at one or more data processors. Datastore 1020 stores a phone and message log that stores informationdescribing past social interaction events that have occurred bytelephone and text messaging. Data store 1020 can include, e.g.,information characterizing the counterparty (e.g., a telephone number)and information characterizing the timing of the past social interactionevents. In some implementations, data store 1020 only stores informationdescribing direct social interaction events, e.g., that occurred overphone interface 1010 and a cellular or other phone.

Data store 1025 stores a collection of contact information thatcharacterizes counterparties with whom social interaction can occur.Among the contact information that can be stored at data store 1025 isinformation for establishing different modes of social interaction. Forexample, data store 1025 can include information characterizingcounterparty's home and work telephone numbers, informationcharacterizing a counterparty's home page or other contributions to asocial networking site or a photosharing site, informationcharacterizing one or more electronic mail, instant message, or othermessaging addresses of a counterparty, as well as other information suchas postal address information, a photograph, and the like.

In some implementations, data store 1025 can also include groupinginformation characterizing groups of counterparties. As described above,in some implementations, a social interaction hub can be limited tosocial interaction with a specified group of individuals. Such a groupof individuals can be specified by grouping information in data store1025.

Data store 1030 stores one or more sets of machine—readable instructionsfor creating a social interaction hub. When implemented by one or moredata processors, the instructions can cause the implementing dataprocessors to aggregate data and present a social interaction hub ondisplay screen 195.

Data processing system 1035 is one or more digital data processors thatperform operations in accordance with the logic of one or more sets ofmachine—readable instructions. Data processing system 1035 can implementone or more modules for performing operations for presenting a socialinteraction hub on display screen 195 in accordance with the logic ofsuch instructions. Among the modules that can be implemented by dataprocessing system 1035 are a user interface module 1040, a variety ofdifferent server interface modules 1045, and a data aggregation module1050.

User interface module 1040 is a set of data processing activities thatprepare instructions for presenting a social interaction hub on displayscreen 195. User interface module 1040 can, e.g., select the particulardata which is to be displayed in a particular social interaction andrespond to user interaction with the displayed social interaction hub.

Server interface modules 1045 are sets of data processing activitiesthat interface with social interaction servers, such as servers 155,160, 165, 170 (FIG. 1 ). In general, each server interface modules 1045is dedicated to obtaining information suitable for presentation in asocial interaction hub from a different social interaction server.Server interface modules 1045 can be, e.g., an electronic mail ormessage clients, as well as dedicated clients tailored to thecharacteristics of a specific social or photosharing network.

The server interface modules 1045 can obtain information forpresentation in a social interaction hub, e.g., by issuing servicerequests to a social interaction server and extracting the formationfrom the responses to those requests. The requests and responses arecommunicated from mobile device 105 to the relevant social interactionserver over one or both of interfaces 1010, 1015. The informationextracted from the responses to the service requests can include, e.g.,incoming electronic mail and text messages, the log-in status of acounterparty (e.g., for presentation of availability indicators 305), aname or other identifier of counterparty involved in a past socialinteraction, an excerpt or other peek from a posting on a photosharingor social network site (e.g., for presentation of subject descriptions405), a counterparty's location from, e.g., a social network site (e.g.,for presentation of location descriptions 505), and timing information(e.g., for presentation of time descriptions 605).

Data aggregation module 1050 is a set of data processing activities thataggregates information drawn from phone/message log 1020, contactinformation 1025, and server interfaces 1045 for presentation of thatinformation in a social interaction hub. In some implementations, dataaggregation module 1050 compares the names or other identifiers ofcounterparties involved in a past social interaction event with names orother identifiers information associated with information drawn fromphone/message log 1020, contact information 1025, and server interfaces1045 and aggregate information associated with the same identifier for asocial interaction event record characterizing that past socialinteraction event. Data aggregation module 1050 can also compare namesor other identifiers of counterparties in information drawn fromphone/message log 1020, contact information 1025, and server interfaces1045 to aggregate information for social status records.

In general, data aggregation module 1050 includes rules for filteringthe social interaction events which are characterized in a socialinteraction hub or the counterparties for whom social status records arepresented. As described above, the past social interaction eventscharacterized in a social interaction hub can be limited in severaldifferent ways, including whether the past event was an incoming oroutgoing social interaction event, whether the past event was direct orserver—mediated, or whether the past event involved a specifiedcounterparty. Data aggregation module 1050 can filter social interactionevents to implement these and other limitations.

In some implementations, data aggregation module 1050 can also includeconflict resolution activities for resolving conflicts betweeninformation drawn from phone/message log 1020, contact information 1025,and server interfaces 1045. For example, a counterparty may beidentified as residing at a first location in contact information 1025but at a second location in a social network server. Data aggregationmodule 1050 can resolve the conflict between contact information 1025and the social network server based on, e.g., the last time informationon either was updated or a user indication that one is to be relied uponfor presentation of location descriptions 505.

In some implementations, data aggregation module 1050 can also includeextraction rules for extracting appropriate information for presentationfro, e.g., electronic mail and text messages, phone and message log1020, and the responses to service requests received by serverinterfaces 1045. For example, data aggregation module 1050 can extractthe subject line of electronic mail messages or a title of a posting ona photosharing or social network for presentation of subjectdescriptions 405.

In some implementations, data aggregation module 1050 can also includerules for collapsing a chain of electronic mail or text messages orother social interaction events into a single social interaction event.For example, data aggregation module 1050 can compare the subject lineof electronic mail messages to identify a chain of related electronicmail messages. Data aggregation module 1050 can then aggregate thosemessages so that a single social interaction event record characterizingthem all is presented.

FIG. 11 is a schematic representation of a collection 1100 of componentsof a mobile device 105. Collection 1100 can include both hardware andsoftware components, as well as one or more data storage devices and oneor more data processors that perform operations for presenting a socialinteraction hub on display screen 195 of a mobile device 105. Forexample, collection 1100 can present one or more of social interactionhubs 200, 300, 400, 500, 600, 700 (FIGS. 2-8) or a social interactionhub that is limited to social status records on a mobile device 105.

In addition to the components described above, data store 1030 ofcollection 1100 also stores one or more sets of user preferenceinformation. The user preference information in data store 1030specifies user preferences for the presentation of a social interactionhub on display screen 195. For example, the user preference informationcan specify limitations on the counterparties who are characterized insocial status records. As another example, the user preferenceinformation can specify limitations on the past social interactionevents that are characterized in a social interaction hub, includingwhether the past event was an incoming or outgoing social interactionevent, whether the past event was direct or server—mediated, or whetherthe past event involved a specified counterparty.

FIG. 12 is a schematic representation of a collection 1200 of userpreference information that specifies limitations on thecharacterization of past social interaction events in a socialinteraction hub.

In the illustrated implementation, collection 1200 is implemented in adata table 1205. Data table 1205 organizes user preference informationinto rows 1210, 1215, 1220, 1225, 1230 and columns 1235, 1240, 1245,1250, 1255, 1260, 1265, 1270, 1275, 1280, 1285. Each row 1210, 1215,1220, 1225, 1230 is associated with a counterparty or group ofcounterparties. Each column 1235, 1240, 1245, 1250, 1255, 1260, 1265,1270, 1275, 1280, 1285 includes data specifying limitations on the pastsocial interaction events that are characterized in a social interactionhub. The limitations specify that past social interaction events are notto be characterized in a social interaction event record.

In the illustrated implementation, the data in columns 1260, 1265specify that social interaction events which occurred on a first socialnetwork are not to be characterized in a social interaction event recordfor the counterparties associated with rows 1210, 1215, 1225, 1230. Incontrast, the data in columns 1260, 1265 also specify that both incomingand outgoing social interaction events which occurred on that same firstsocial network are t to be characterized in social interaction eventrecords for the counterparties in the group associated with rows 1220.For example, the group associated with rows 1220 may be a user'simmediate family and the user may desire that a social interaction hubexhaustively present all social interaction event involving those familymembers.

FIG. 13 is a schematic representation of a collection 1300 of componentsof a mobile device 105. Collection 1300 can include both hardware andsoftware components, as well as one or more data storage devices and oneor more data processors that perform operations for presenting a socialinteraction hub on display screen 195 of a mobile device 105. Forexample, collection 1300 can be used present one or more of socialinteraction hubs 200, 300, 400, 500, 600, 700 (FIGS. 2-8 ) or a socialinteraction hub that is limited to social status records on a mobiledevice 105.

In addition to many of the components described above, collection 1300includes an integrated social information data store 1305. Integratedsocial information data store 1305 is a database or other data storethat integrates the storage of information characterizing contacts andinformation characterizing social interaction events that had occurredby a variety of different social interaction modes. For example,integrated social information data store 1305 can store informationcharacterizing all of the different social interaction modes by whichthe user of a mobile device 105 can interact with his or her contacts ina single integrated database.

FIG. 14 is an example of a database schema 1400 of integrated socialinformation data store 1305. Database schema 1400 represents anextensible database of contact-related information and includes acontacts class 1405, a raw contact class 1410, a contact data class1415, and a status update class 1420. Contacts class 1405 has aone-to-many relationship 1425 with raw contact class 1410. Raw contactclass 1410 has a one-to-many relationship with contact data class 1415.Contact data class 1415 has a one-to-one relationship with status updateclass 1420.

Contacts class 1405 is a class that stores information characterizingcontacts. Contacts are individuals who may be counterparties in one ormore social interaction events. Information can be stored in instancesof contacts class 1405 by data aggregator 1050. In some implementations,each of multiple rows in a data table can be dedicated to storinginformation characterizing each such individual and form separateinstances of contacts class 1405.

In some implementations, the information characterizing contacts that isstored in contacts class 1405 is limited, with contacts class 1405essentially storing only a numeric or other unique identifier and linksto instances of raw contacts class 1410 that can be combined andpresented as a single logical person. For example, in the illustratedimplementation, contacts class 1405 includes a numeric or other uniqueidentifier of the contact (i.e., the “contact_ID” field shown in FIG. 14), a name or other textual identifier of the contact (i.e.,“display_name”), and any links to instances of raw contacts class 1410.

In some implementations, contacts class 1405 includes a predefined setof data kinds for characterizing contacts and additional data kinds thatare added, e.g., by different applications. The set of data kinds thatcan be stored in contacts class 1405 can thus in some implementations beopen-ended.

Raw contact class 1410 is a class that stores information characterizinga “raw contact” from a single account of the user with whom mobiledevice 105 is associated. An account is the result of a contractual orother arrangement between the user with whom mobile device 105 isassociated and an entity. The entity can be an entity that mediatessocial interaction. For example, the user with whom mobile device 105 isassociated may have an electronic mail account with the provider of anelectronic mail server 155, a social network account with the providerof a social network server 160, a text message account with the providerof a text message server 165, or a photo account with the provider of aphoto server 170 (FIG. 1 ).

As used herein, a “raw contact” is a representation of an individual(i.e., the contact) at an account of the user with whom mobile device105 is associated. The individual can be a counterparty to past socialinteraction events or otherwise identified as associated with the userwith whom mobile device 105 is associated. For example, “raw contacts”in the context of a social network can be individuals who are friends ofthe user with whom mobile device 105 is associated or those individualswho are followed by the user with whom mobile device 105 is associated.As another example, a “raw contact” in the context of an electronic mailaccount can be individuals whose contact information is saved in theelectronic mail account or individuals whom are commonly mailed by theuser with whom mobile device 105 is associated.

At times, a single real-world individual may be represented by multipleinstances of raw contact class 1410. For example, the user with whommobile device 105 is associated may have the same person as a contact inan electronic mail system and as a friend in two different socialnetworks. In this case, the same person could be represented by threedifferent instances of raw contact class 1410. As discussed above, eachinstance of contacts class 1405 can include links to such multipleinstances of raw contact class 1410 and such multiple instances of rawcontact class 1410 can be combined and presented as a single logicalperson.

In some implementations, a row in a data table can be dedicated tostoring information characterizing each instance of a raw contact. Amongthe information characterizing a raw contact that may be stored in rawcontact class 1410 are a numeric or other unique identifier of theindividual (i.e., “contact_ID”), a numeric or other unique identifier ofthe category of the account in which the individual is represented(i.e., “account_type”), a numeric or other unique identifier of the rawcontact class instance (i.e., “raw_contact_ID”), the name of the account(i.e., electronic mail address, telephone number, social network accountname, or the like), an indication of the number of times the individualhas been contacted using the account, an indication of the last time theindividual had been contacted using the account, an indication ofwhether a custom ringtone is associated with the representation of theindividual in the account, and the like. In some implementations, thecategory of the account is constrained to follow a naming convention,e.g., the JAVA package naming convention. Such a constraint can helpensure that duplicate accounts can be identified and aggregated.

In general, raw contact class 1410 is indexed on a numeric or otherunique identifier of the individual (i.e., the “contact_ID”) so thatmultiple raw contacts that represent the same real-world individual indifferent accounts can be identified quickly. Further, in someimplementations, raw contact class 1410 is also indexed on account typeand account name so that multiple raw contacts from a single accountsource can be identified quickly.

Contact data class 1415 is a class that stores data points from rawcontacts characterized in instances of raw contact class 1410. In someimplementations, each row in a data table can form an instance ofcontact data class 1415 that is dedicated to storing a single piece ofinformation drawn from a raw contact (such as a phone number orelectronic mail address) and its associated metadata (such as what typeof data is stored, whether it is a work or home number, and the like).Among the information that may be stored in contact data class 1415 area numeric or other unique identifier of the raw contact class instancethat is characterized (i.e., “raw_contact_ID”), a numeric or otherunique identifier of the contact data class instance (i.e., “data_ID”),generic fields that can hold a variety of different kinds of contactdata (e.g., “data_1” and “data_2”) and type data that identifies thetype of contact data stored in each generic field (e.g., “type”). Forexample, the type data can indicate that a generic field stores a phonenumber, an electronic mail addresses, an account in a social or photonetwork, or the like. The data types are generally constrained to apredefined set of types. For example, in some implementations, the datatypes can be constrained to being Multipurpose Internet Mail Extensions(MIME) data types. By constraining the data types predefined set oftypes, mobile device 105 can determine how to display data points drawnfrom different raw contacts. For example, different phone numbers drawnfrom different accounts can be recognized as such and displayedaccordingly.

In some implementations, contact data class 1415 includes a predefinedset of data kinds and additional data kinds that are added, e.g., bydifferent applications. The set of data kinds that can be stored incontacts class 1405 can thus be open-ended. Such additional data kindscan also be the subject of requests and responses between acorresponding server interface module 1045 and its server.

In some implementations, first generic fields (e.g., “data_1”) form anindexed column in a contact data class table and store data that isexpected to be frequently used in database queries. For example, in thecase of a row representing an electronic mail address, the first genericfield can generally include the electronic mail address itself. Othergeneric fields can store auxiliary information that characterizes thedata in the first generic field, such as whether the electronic mailaddress stored in the first generic field is a home or businesselectronic mail address.

Status update class 1420 is a class that stores a contact's lateststatus updates from a corresponding raw contact characterized in rawcontact class 1410. Among the information that may be stored in statusupdate class 1420 are a numeric or other unique identifier of thecontact data class instance that is characterized in the status updateclass instance (i.e., “data_ID”), a uniform resource identifier (URI) orother identifier of a storage location of an icon that represents theentity with which the contact has the corresponding account (i.e.,“source_icon”), a uniform resource identifier (URI) or other identifierof a storage location of a name or other label identifying the entitywith which the contact has the corresponding account (i.e.,“source_label”), a numeric or other identify of the contact's lateststatus (i.e., “status”), any text of the status update (e.g., “text”),and a timestamp when status was last updated by the contact at thecorresponding account (e.g., “timestamp”).

The status updates that can be stored in status update class 1420 cantake a variety of forms. For example, in some implementations, thecontact's latest status (i.e., “status”) is constrained to have one of apredetermined set of allowed values, such as “offline,” “invisible,”“away,” “idle,” “do_not_disturb,”, and “available,” whereas the text ofa status update (i.e., “status”) can have a range of values such as,e.g., “having lunch” or “enjoying watching Federer rally against Nadalin Palm Springs,” as shown in FIG. 7 .

A database schema such as database schema 1405 provides a number ofdifferent advantages. For example, different numbers of different kindsof accounts can be associated with each contact. The account informationis stored in data structures that can accommodate not only a variety ofdifferent types of accounts but also new types of accounts as they aredeveloped by different entities that mediate social interaction. In someimplementations, information characterizing the accounts can be storedin a single data table, with records characterizing different kinds ofaccounts interspersed among each other.

A single most recent status update can be stored for each different kindof account, along with information identifying the time when status waslast updated by the contact at the corresponding account. In someimplementations, the timestamps when status was last updated at thedifferent accounts is used to select one of the status updates fordisplay as the most current status update, e.g., in a social statusrecord 900 (FIG. 9 ).

Information drawn from a variety of different entities that mediatesocial interaction can be stored in a single location and integrated foruse in presenting one or more of social interaction hubs 200, 300, 400,500, 600, 700 (FIGS. 2-8 ) or a social interaction hub that is limitedto social status records on a mobile device 105.

Further, access to the information in database schema 1405 isfacilitated by database schema 1405. For example, informationidentifying the raw contacts of a single real-world individual can beaccessed relatively quickly by a search of instances of raw contactclass 1410. For example, a query can identify the rows or other recordsin instances of raw contact class 1410 that share the contact_ID of aparticular social interaction counterparty when determining which modeindicia are to be included in a particular contact's indicia collection235. Only after a particular mode indicium has been selected for anoutgoing social interact do data points tied to the raw contactcorresponding to the selected indicium need to be accessed from contactdata class 1415.

Implementations of the subject matter and the operations described inthis specification can be implemented in digital electronic circuitry,or in computer software, firmware, or hardware, including the structuresdisclosed in this specification and their structural equivalents, or incombinations of one or more of them. Implementations of the subjectmatter described in this specification can be implemented as one or morecomputer programs, i.e., one or more modules of computer programinstructions, encoded on computer storage medium for execution by, or tocontrol the operation of, data processing apparatus. Alternatively or inaddition, the program instructions can be encoded on anartificially-generated propagated signal, e.g., a machine-generatedelectrical, optical, or electromagnetic signal, that is generated toencode information for transmission to suitable receiver apparatus forexecution by a data processing apparatus. A computer storage medium canbe, or be included in, a computer-readable storage device, acomputer-readable storage substrate, a random or serial access memoryarray or device, or a combination of one or more of them. Moreover,while a computer storage medium is not a propagated signal, a computerstorage medium can be a source or destination of computer programinstructions encoded in an artificially-generated propagated signal. Thecomputer storage medium can also be, or be included in, one or moreseparate physical components or media (e.g., multiple CDs, disks, orother storage devices).

The operations described in this specification can be implemented asoperations performed by a data processing apparatus on data stored onone or more computer-readable storage devices or received from othersources.

The term “data processing apparatus” encompasses all kinds of apparatus,devices, and machines for processing data, including by way of example aprogrammable processor, a computer, a system on a chip, or multipleones, or combinations, of the foregoing The apparatus can includespecial purpose logic circuitry, e.g., an FPGA (field programmable gatearray) or an ASIC (application-specific integrated circuit). Theapparatus can also include, in addition to hardware, code that createsan execution environment for the computer program in question, e.g.,code that constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, a cross-platform runtimeenvironment, a virtual machine, or a combination of one or more of them.The apparatus and execution environment can realize various differentcomputing model infrastructures, such as web services, distributedcomputing and grid computing infrastructures.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, object, orother unit suitable for use in a computing environment. A computerprogram may, but need not, correspond to a file in a file system. Aprogram can be stored in a portion of a file that holds other programsor data (e.g., one or more scripts stored in a markup languagedocument), in a single file dedicated to the program in question, or inmultiple coordinated files (e.g., files that store one or more modules,sub-programs, or portions of code). A computer program can be deployedto be executed on one computer or on multiple computers that are locatedat one site or distributed across multiple sites and interconnected by acommunication network.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform actions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for performing actions in accordance with instructions andone or more memory devices for storing instructions and data. Generally,a computer will also include, or be operatively coupled to receive datafrom or transfer data to, or both, one or more mass storage devices forstoring data, e.g., magnetic, magneto-optical disks, or optical disks.However, a computer need not have such devices. Moreover, a computer canbe embedded in another device, e.g., a mobile telephone, a personaldigital assistant (PDA), a mobile audio or video player, a game console,a Global Positioning System (GPS) receiver, or a portable storage device(e.g., a universal serial bus (USB) flash drive), to name just a few.Devices suitable for storing computer program instructions and datainclude all forms of non-volatile memory, media and memory devices,including by way of example semiconductor memory devices, e.g., EPROM,EEPROM, and flash memory devices; magnetic disks, e.g., internal harddisks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's client device in response to requests received from the webbrowser.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back-end component,e.g., as a data server, or that includes a middleware component, e.g.,an application server, or that includes a front-end component, e.g., aclient computer having a graphical user interface or a Web browserthrough which a user can interact with an implementation of the subjectmatter described in this specification, or any combination of one ormore such back-end, middleware, or front-end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, e.g., a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), an inter-network (e.g., the Internet), andpeer-to-peer networks (e.g., ad hoc peer-to-peer networks).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. In someembodiments, a server transmits data (e.g., an HTML page) to a clientdevice (e.g., for purposes of displaying data to and receiving userinput from a user interacting with the client device). Data generated atthe client device (e.g., a result of the user interaction) can bereceived from the client device at the server.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinventions or of what may be claimed, but rather as descriptions offeatures specific to particular embodiments of particular inventions.Certain features that are described in this specification in the contextof separate embodiments can also be implemented in combination in asingle embodiment. Conversely, various features that are described inthe context of a single embodiment can also be implemented in multipleembodiments separately or in any suitable subcombination. Moreover,although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular implementations have been described. Otherimplementations are within the scope of the following claims. In somecases, the actions recited in the claims can be performed in a differentorder and still achieve desirable results. In addition, the processesdepicted in the accompanying figures do not necessarily require theparticular order shown, or sequential order, to achieve desirableresults. In certain implementations, multitasking and parallelprocessing may be advantageous.

1. (canceled)
 2. A computer-implemented system, comprising: one or morecomputer processors; and at least one memory operably coupled to the oneor more computer processors and storing instructions that, when executedby the one or more computer processors, perform operations including:determining currently available communication modes via which a firstcontact among a plurality of contacts is currently available to engagein communication with a first user, wherein determining the currentlyavailable communication modes further comprises: identifying a first setof communication modes corresponding to the first contact, the first setof communication modes indicating, a set of communication modes by whichthe first contact can be contacted; receiving data identifying, fromamong the first set of communication modes, a first subset ofcommunication modes via which the first contact is currently availableand a second subset of communication modes via which the first contactis not currently available; in response to determining the currentlyavailable communication modes, providing, for display on an interfaceincluding a social interaction hub, an availability indicator overcommunication mode indicia corresponding to the currently availablecommunication modes, wherein the availability indicator identifies acommunication mode via which the first contact is currently available toengage in communication with the first user and wherein providing theavailability indicator for display comprises providing a graphicalelement that is darkened to indicate that the first contact is currentlyavailable to engage in communication with the first user for each of thecommunication mode indica corresponding to the currently availablecommunication modes; receiving a request to communicate with the firstcontact, wherein the request includes data representing a selection of aparticular communication mode indicia that corresponds to a particularcommunication mode with the availability indicator; and in response toreceiving the request to communicate with the first contact, triggeringa communication with the first user using the particular communicationmode corresponding to the selected particular communication modeindicia.
 3. The computer-implemented system of claim 2, wherein theavailability indicator comprises an additional graphical elementprovided for display, wherein the additional graphical element indicatesthat the first contact is currently available to communicate with thefirst user for each of the communication mode indicia corresponding tothe currently available communication modes.
 4. The computer-implementedsystem of claim 2, wherein determining the currently availablecommunication modes via which the first contact in the plurality ofcontacts is currently available to engage in communication with thefirst user comprises accessing a data store that stores contactinformation for the plurality of contacts.
 5. The computer-implementedsystem of claim 2, wherein the data representing a selection of aparticular communication mode indicia is received as speech input. 6.The computer-implemented system of claim 2, wherein the currentlyavailable communication modes comprise communication modes including atleast and voice calling.
 7. The computer-implemented system of claim 2,wherein triggering the communication with the first user using thecommunication mode corresponding to the selected particularcommunication mode indicia, comprises at least one of (i) initiating atleast a message or a post, via a social network for sending to the firstuser, (ii) initiating a social interaction via a photosharing networkwith the first user, (iii) generating an email message for sending tothe first user, or (iv) initiating a voice call with the first user. 8.The computer-implemented system of claim 2, wherein the instructions,when executed by the one or more computer processors, perform operationsfurther comprising: providing, for display on the interface includingthe social interaction hub, a contact indicia for each of the pluralityof contacts, wherein selection of the contact indicia for a particularcontact triggers provision of an interface that provides additionalinformation regarding the particular contact.
 9. Thecomputer-implemented system of claim 2, wherein the instructions, whenexecuted by the one or more computer processors, perform operationsfurther comprising: determining, based on data available via the one ormore of the currently available communication modes corresponding to aparticular contact, a current status for the particular contact; andproviding, for display on the interface including the social interactionhub, a status indicia for the particular contact that provides fordisplay the current status for the particular contact.
 10. Thecomputer-implemented system of claim 2, wherein the instructions, whenexecuted by the one or more computer processors, perform operationsfurther comprising: providing, for display on a computing device to thefirst user, the interface including the social interaction hub thatprovides: a plurality of contacts associated with the first user; aplurality of communication mode indicia corresponding to each of theplurality of contacts, each communication mode indicia indicating acommunication mode among a plurality of communication modes by which aninteraction with a particular contact can occur; and prior communicationdata providing a portion of the data from a prior communication with oneor more contacts in the plurality of contacts.
 11. A non-transitorycomputer-readable medium comprising instructions which, when executed byone or more processors, cause the one or more processors to performoperations comprising: determining currently available communicationmodes via which a first contact among a plurality of contacts iscurrently available to engage in communication with a first user,wherein determining the currently available communication modes furthercomprises: identifying a first set of communication modes correspondingto the first contact, the first set of communication modes indicating aset of communication modes by which the first contact can be contacted;receiving data identifying, from among the first set of communicationmodes, a first subset of communication modes via which the first contactis currently available and a second subset of communication modes viawhich the first contact is not currently available; in response todetermining the currently available communication modes, providing, fordisplay on an interface including a social interaction hub, anavailability indicator over communication mode indicia corresponding tothe currently available communication modes, wherein the availabilityindicator identifies a communication mode via which the first contact iscurrently available to engage in communication with the first user andwherein providing the availability indicator for display comprisesproviding a graphical element that is darkened to indicate that thefirst contact is currently available to engage in communication with thefirst user for each of the communication mode indica corresponding tothe currently available communication modes; receiving a request tocommunicate with the first contact, wherein the request includes datarepresenting a selection of a particular communication mode indicia thatcorresponds to a particular communication mode with the availabilityindicator; and in response to receiving the request to communicate withthe first contact, triggering a communication with the first user usingthe particular communication mode corresponding to the selectedparticular communication mode indicia.
 12. The non-transitorycomputer-readable medium of claim 11, wherein the availability indicatorcomprises an additional graphical element provided for display, whereinthe additional graphical element indicates that the first contact iscurrently available to communicate with the first user for each of thecommunication mode indicia corresponding to the currently availablecommunication modes.
 13. The non-transitory computer-readable medium ofclaim 11, wherein determining the currently available communicationmodes via which the first contact in the plurality of contacts iscurrently available to engage in communication with the first usercomprises accessing a data store that stores contact information for theplurality of contacts.
 14. The non-transitory computer-readable mediumof claim 11, wherein the data representing a selection of a particularcommunication mode indicia is received as speech input.
 15. Thenon-transitory computer-readable medium of claim 11, wherein theoperations further comprise: providing, for display on a computingdevice to the first user, the interface including the social interactionhub that provides: a plurality of contacts associated with the firstuser; a plurality of communication mode indicia corresponding to each ofthe plurality of contacts, each communication mode indicia indicating acommunication mode among a plurality of communication modes by which aninteraction with a particular contact can occur; and prior communicationdata providing a portion of the data from a prior communication with oneor more contacts in the plurality of contacts.
 16. The non-transitorycomputer-readable medium of claim 11, wherein triggering thecommunication with the first user using the communication modecorresponding to the selected particular communication mode indicia,comprises at least one of (i) initiating at least a message or a post,via a social network for sending to the first user, (ii) initiating asocial interaction via a photosharing network with the first user, (iii)generating an email message for sending to the first user, or (iv)initiating a voice call with the first user.
 17. The non-transitorycomputer-readable medium of claim 11, wherein the instructions, whenexecuted by the one or more processors, perform operations furthercomprising: providing, for display on the interface including the socialinteraction hub, a contact indicia for each of the plurality ofcontacts, wherein selection of the contact indicia for a particularcontact triggers provision of an interface that provides additionalinformation regarding the particular contact.
 18. The non-transitorycomputer-readable medium of claim 11, wherein the instructions, whenexecuted by the one or more processors, perform operations furthercomprising: determining, based on data available via the one or more ofthe currently available communication modes corresponding to aparticular contact, a current status for the particular contact; andproviding, for display on the interface including the social interactionhub, a status indicia for the particular contact that provides fordisplay the current status for the particular contact.
 19. Acomputer-implemented method, comprising: determining currently availablecommunication modes via which a first contact among a plurality ofcontacts is currently available to engage in communication with a firstuser, wherein determining the currently available communication modesfurther comprises: identifying a first set of communication modescorresponding to the first contact, the first set of communication modesindicating a set of communication modes by which the first contact canbe contacted; receiving data identifying, from among, the first set ofcommunication modes, a first subset of communication modes via which thefirst contact is currently available and a second subset ofcommunication modes via which the first contact is not currentlyavailable; in response to determining the currently availablecommunication modes, providing, for display on an interface including asocial interaction hub, an availability indicator over communicationmode indicia corresponding to the currently available communicationmodes, wherein the availability indicator identifies a communicationmode via which the first contact is currently available to engage incommunication with the first user and wherein providing the availabilityindicator for display comprises providing a graphical element that isdarkened to indicate that the first contact is currently available toengage in communication with the first user for each of thecommunication mode indica corresponding to the currently availablecommunication modes; receiving a request to communicate with the firstcontact, wherein the request includes data representing a selection of aparticular communication mode indicia that corresponds to a particularcommunication mode with the availability indicator; and in response toreceiving the request to communicate with the first contact, triggeringa communication with the first user using the particular communicationmode corresponding to the selected particular communication modeindicia.
 20. The computer-implemented method of claim 19, whereintriggering the communication with the first user using the communicationmode corresponding to the selected particular communication modeindicia, comprises at least one of (i) initiating at least a message ora post, via a social network for sending to the first user, (ii)initiating a social interaction via a photosharing network with thefirst user, (iii) generating an email message for sending to the firstuser, or (iv) initiating a voice call with the first user.
 21. Thecomputer-implemented method of claim 19, wherein the availabilityindicator comprises an additional graphical element provided fordisplay, wherein the additional graphical element indicates that thefirst contact is currently available to communicate with the first userfor each of the communication mode indicia corresponding to thecurrently available communication modes.